#ifndef INC_LEAVECOMMAND_H
#define INC_LEAVECOMMAND_H

#include "command/command.h"

namespace Commands{
	class LeaveCommand: public Command{
		public:
			LeaveCommand();
			~LeaveCommand();
			
			/**
			 * Executes the command
			 */
			void execute();

			/**
			 * Returns the name by which the command is registered with a CommandFactory
			 * @return commandname
			 */
			string name();
			
			/**
			 * Return a string with which this command can be remade if it were fed into a CommandFactory
			 * @return representational string
			 */
			string repr();
			
			/**
			 * Return the creator to make this command given the representational string
			 * @return a CommandCreator for this Command
			 */
			CommandCreator creator();
		protected:
			virtual Document* toXML(Document* doc = 0);
		
		private:
			static Command* makeCommand(string r, void* s);
			static const string NAME;
	};
}

#endif
